from datetime import datetime
from django import template

# 得到一个注册器（相当于创建类的对象）
register = template.Library()


def my_capfirst(value):
    # 将数据的首字母大写后，返回回去
    return value.capitalize()

# 进行注册
register.filter('my_capfirst', my_capfirst)


# 第二种注册方式
@register.filter('my_default')
def my_default(value, arg):
    if value:
        return value
    else:
        return arg


@register.simple_tag(name='cur')
def currend_time(format_string):
    # strftime()->>根据给定的格式返回时间
    return datetime.now().strftime(format_string)


@register.filter('time_since')
def time_since(value):
    """
    对时间进行判断
    1.如果和当前时间间隔小于1分钟，显示’刚刚‘
    2.如果大于1分钟小于1小时，显示’**分钟前‘
    3.如果大于1小时小于1天，显示’**小时前‘
    4.如果大于24小时小于30天，’**天前‘
    5.如果大于30天，显示具体发布时间
    :param value:
    :return:
    """
    # 当前时间的时间戳
    now=datetime.now()
    # total_seconds()->>计算时间间隔的总秒数
    # 计算时间差
    timestep=(now-value).total_seconds()
    if timestep <= 60:
        return '刚刚'
    elif 60 < timestep <= 60*60:
        res = int(timestep/60)
        return f'{res}分钟前'
    elif 60*60 < timestep <= 60*60*24:
        res = int(timestep/(60*60))
        return f'{res}小时前'
    elif 60*60*24 < timestep <= 60*60*24*30:
        res = int(timestep / (60*60*24))
        return f'{res}天前'
    else:
        return value.strftime('%Y-%m-%d %H:%M:%S')